package 抽象工厂.v1.factory;

import 抽象工厂.v1.human.Human;
import 抽象工厂.v1.HumanEnum;

/**
 * 八卦炉
 * 编写一个抽象类,根据enum创建一个人类出来
 */
public abstract class AbstractHumanFactory implements HumanFactory  {
    /**
     * 给定一个性别人类,创建一个人类出来 专业术语是产生产品等级
     * @param humanEnum
     * @return
     */
    public Human createHuman(HumanEnum humanEnum) {
        Human human = null;

        try {
            // //如果传递进来不是一个Enum中具体的一个Element的话,则不处理
            if("".equals(humanEnum.getValue())) return null;
            //直接产生一个实例
            human = (Human) Class.forName(humanEnum.getValue()).newInstance();
        } catch (Exception e) {
            //因为使用了enum,这个种异常情况不会产生了,除非你的enum有问题;
            e.printStackTrace();
        }
        return human;
    }
}
